package otw.dao.ibatis.base;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import otw.utils.pagination.Page;

/**
 * <p>
 * Repository base interface
 * </p>
 * <p>
 * insert 插入1条记录
 * </p>
 * <p>
 * getById 根据主键获得1条记录<br>
 * getByObject 根据对象获得1条记录<br>
 * </p>
 * <p>
 * updateById 根据id更新1条记录<br>
 * updateByObject 根据 对象 更新1条记录<br>
 * </p>
 * <p>
 * deleteById 根据主键删除1条记录<br>
 * deleteByObject 根据1系列参数删除满足条件的记录<br>
 * </p>
 * <p>
 * getByMap 根据1系列参数获得满足条件的记录<br>
 * countByMap 根据1系列参数获得满足条件的记录总数<br>
 * </p>
 * <p>
 * getByPage 获得封装后的一页数据<br>
 * </p>
 * 
 * @author eric
 * @date 2010-6-5 下午03:11:04
 * @param <T>
 *            具体类 dao 类 中操作的 domain 类的类型
 */
@SuppressWarnings("rawtypes")
public interface DaoBase<T> {
	Object insert(T t);

	T getById(Integer id);

	T getByObject(T t);

	int updateById(Serializable id);

	int updateByObject(T t);

	int deleteById(Serializable id);

	int deleteByObject(T t);

	List<T> getByMap(Map param);

	Integer countByMap(Map param);

	Page<T> getByPage(Map param);
}
